package com.qwz.learn;
/**
* @Description:  抽象的组件对象，为组合中的对象声明接口，实现接口的缺省行为
* @Package: com.qwz.learn.Component
* @Author: Qiuwuzhi
* @CreateDate: 2019/12/20  下午 9:13
* @Version V1.0
*/ 
public abstract class Component {
    //示意方法，子组件对象可能有的功能方法
    public abstract void someOperation();

    /**
     * 向组合对象中加入组件对象
     * @param child
     */
    public void addChild(Component child){
        //缺省的实现，抛出例外，因为叶子对象没有这个功能
        //或者子组件没有实现这个功能
        throw new UnsupportedOperationException("对象不支持这个功能");
    }

    /**
     * 从组合对象中移出某个组件对象
     * @param child
     */
    public void removeChild(Component child){
        //缺省的实现，抛出例外，因为叶子对象没有这个功能
        //或者子组件没有实现这个功能
        throw new UnsupportedOperationException("对象不支持这个功能");

    }

    /**
     * 返回某个索引对应的组件对象
     * @param child
     */
    public Component getChild(int index){
        //缺省的实现，抛出例外，因为叶子对象没有这个功能
        //或者子组件没有实现这个功能
        throw new UnsupportedOperationException("对象不支持这个功能");

    }
}
